package org.gvp.manager.service;

import org.gvp.common.constant.BaseService;
import org.gvp.manager.dto.AuthorityTreeData;
import org.gvp.manager.dto.AuthorityTreeUpdate;
import org.gvp.manager.dto.PathTreeData;
import org.gvp.manager.pojo.SecurityRolePath;
import org.gvp.manager.to.MapperUpdate;

import java.util.List;

/**
 * 角色请求路径关系表 服务层接口
 */
public interface SecurityRolePathService extends BaseService<SecurityRolePath> {
    /**
     * 菜单顶层菜单的ID
     */
    public static final Integer PAH_PARENT_ID = 1040000000;
    /**
     * 根据角色编号获取角色和路径关系处理权限树数据
     */
    AuthorityTreeData findAuthorityTreeData(Integer roleId);

    /**
     * 根据角色编号获取角色路径key列表
     */
    List<String> findRolePathKeys(Integer roleId);

    /**
     * 根据路径树数据的父id获取路径树数据
     * @param parentId 数据父id
     */
    List<PathTreeData> findByParentId(Integer parentId);

    /**
     * 更新角色路径关系关系
     */
    int editAuthority(AuthorityTreeUpdate update);

    /**
     * 添加角色路径关系
     * @param id 角色编号
     * @param addNodes 需要添加的路径key列表
     * @return 添加成功的条数
     */
    int saveRolePath(Integer id, List<String> addNodes);

    /**
     * 逻辑删除角色路径关系
     * @param update 需要删除的路径key列表和角色编号
     * @return 删除成功的条数
     */
    int logicalRemoveAuthority(MapperUpdate update);

    /**
     * 根据角色id和路径id查找角色路径关系信息
     * @param roleId 角色id
     * @param pathId 路径id
     * @return 角色路径关系信息
     */
    SecurityRolePath findByRoleIdAndPathId(Integer roleId, Integer pathId);
}
